#ifndef ABSTRACT_TYPE_PROXY_H
#define ABSTRACT_TYPE_PROXY_H

#include <QtCore/QObject>
#include <QtCore/QVariant>

class QScriptEngine;

namespace core
{
class Type;
}

namespace wfnet
{

class AbstractTypeProxy : public QObject
{
    Q_OBJECT
public:
    AbstractTypeProxy(QObject* parent = 0) : QObject(parent) {}
    virtual ~AbstractTypeProxy() {}

    void setEngine(QScriptEngine* engine) { m_engine = engine; }
    virtual void setValue(const QVariant& value) = 0;
    virtual const core::Type* getValue() const = 0;

    virtual void setIdentity(const core::Type& type) {}

protected:
    QScriptEngine* m_engine;
};

} // namespace wfnet

#endif
